package com.ysw.annotation;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.annotation.AliasFor;

import javax.validation.constraints.NotEmpty;
import java.lang.annotation.*;

/**
 * 自定义soa autowire注解，用于标注一个类的成员需要调用soa服务，
 * 添加该注解的成员变量类型必须为接口类型。且该注解必须添加到spring bean的成员变量中才能生效，
 * 注解中需要通过<strong>application</strong>属性显示指定要调用的应用名称(soa sever的名称)
 * @author ysw  2019/10/31 7:09 PM
 */
@Documented
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.FIELD)
public @interface SoaReference {

    /**
     * 应用名称
     * @return
     */
    @NotEmpty
    @AliasFor("application")
    String value() default "";

    /**
     * 应用名称，用于指定调用哪个应用的soa服务
     * @return
     */
    @NotEmpty
    @AliasFor("value")
    String application() default "";
}
